The development of the EDVAC computer system of 1948 is often cited as the beginning of the computer era. Since that time, computer systems have evolved into extremely sophisticated devices, and computer systems may be found in many different settings. Computer systems typically include a combination of hardware, such as semiconductors and circuit boards, and software, also known as computer programs. One of the primary uses of computer systems is for data storage and retrieval across a network.
An example of one such network is called Infiniband, which uses a memory-based user-level communication abstraction called a queue pair (QP), which is the logical endpoint of a communication link across the network. The queue pair is a memory-abstraction where communication is achieved through direct memory-to-memory transfers between applications and devices in the network. All transactions or operations in a switch fabric of the network are handled via work requests sent to target channel adapters.
Each work request requires the target channel adapter to allocate a variable amount of memory and then deallocate the memory after the operation completes. This can result in multiple interrupts to the firmware of the target channel adapter, as much as one per incoming frame of data. In addition, the target channel adapter may have many queue pairs, each with many outstanding work requests, and the buffer management of one queue pair may over-utilize the free memory in the target channel adapter to the detriment of other queue pairs. Thus, the target channel adapter may become bottlenecked while managing its pool of free memory, which can lead to poor performance.
Without a better way to handle the allocation and deallocation of memory, computer networks will continue to suffer with poor performance, which is annoying and expensive for the users. Although the aforementioned problems have been described in the context of Infiniband, they apply to any type of network.